package GestionDatosFM;

import java.util.ArrayList;

import ExcepcionesFM.ExcepcionEquipoInvalido;
import LogicaFM.EquipoFantasia;
import LogicaFM.EquipoPrimera;
import LogicaFM.JugadorPrimera;
import LogicaFM.Usuario;

public class GestorEquipoFantasia {

	public static final int COTIZACION_MAXIMA = 50000000;

	public EquipoFantasia createEquipoFantasia(String nombreEquipo) {
		
		return new EquipoFantasia(nombreEquipo);
	}

	public static void nuevoEquipo(Usuario usuario) {
		
		usuario.setEquipo(new EquipoFantasia());
	}

	public static void validarNombre(String nombreEquipo) throws ExcepcionEquipoInvalido{
				
		if(nombreEquipo.equals("")){	
			throw new ExcepcionEquipoInvalido("No ha elegido un Nombre para su Equipo. Ingrese uno y vuelva a intentarlo.");
		}
		
		if(EquipoFantasiaDAO.existeNombre(nombreEquipo)){
			throw new ExcepcionEquipoInvalido("El nombre de tu equipo ya ha sido utilizado. Por favor ingresa otro.");
		}
		if(EquipoFantasiaDAO.esDePrimera(nombreEquipo)){
			throw new ExcepcionEquipoInvalido("El nombre que elegiste pertenece a un equipo de primera. Por favor ingresa otro.");
		}
	}

	public static EquipoFantasia[] getEquipos(int numeroFecha) {
		
		EquipoFantasia[] arrayEquipos = EquipoFantasiaDAO.selecEquipos();
		
		for(int i = 0; i<arrayEquipos.length; i++){
			
			arrayEquipos[i].setFormacion(GestorFormacionEquipoFantasia.getFormacion(arrayEquipos[i], numeroFecha), GestorFecha.getFechaActual());
			
		}
		
		return arrayEquipos;
	}

	public static void guardarEquipo(Usuario usuarioActual) {
		
		EquipoFantasiaDAO.insertEquipo(usuarioActual);
		
		return;
		
	}

	public static void validarEquipoCompleto(EquipoFantasia equipo) throws ExcepcionEquipoInvalido {
		
		ArrayList<JugadorPrimera> titulares = equipo.getFormacion(GestorFecha.getFechaActual()).getTitulares();
		ArrayList<JugadorPrimera> suplentes = equipo.getFormacion(GestorFecha.getFechaActual()).getSuplentes();
		int i;
		int arquerosTitulares = 0, arquerosSuplentes = 0;
		int defensoresTitulares = 0, defensoresSuplentes = 0;
		int volantesTitulares = 0, volantesSuplentes = 0;
		int delanterosTitulares = 0, delanterosSuplentes = 0;
		String puesto;
		
		for(i = 0; i<titulares.size(); i++){
			
			puesto = titulares.get(i).getPuesto();
			
			if(puesto.equals("ARQ"))
				arquerosTitulares++;
			else if(puesto.equals("DEF"))
				defensoresTitulares++;
			else if(puesto.equals("VOL"))
				volantesTitulares++;
			else if(puesto.equals("DEL"))
				delanterosTitulares++;
			
		}
		
		for(i = 0; i<suplentes.size(); i++){
			
			puesto = suplentes.get(i).getPuesto();
			
			if(puesto.equals("ARQ"))
				arquerosSuplentes++;
			else if(puesto.equals("DEF"))
				defensoresSuplentes++;
			else if(puesto.equals("VOL"))
				volantesSuplentes++;
			else if(puesto.equals("DEL"))
				delanterosSuplentes++;
			
			
		} 
		
		if(arquerosTitulares != 1)
			throw new ExcepcionEquipoInvalido("Aun no ingreso un Arquero Titular.");
		if(arquerosSuplentes != 1)
			throw new ExcepcionEquipoInvalido("Aun no ingreso un Arquero Suplente.");
		
		if(defensoresTitulares != 4)
			throw new ExcepcionEquipoInvalido("Debe ingresar "+(4-defensoresTitulares)+" Defensor(es) Titular(es) mas");
		if(defensoresSuplentes != 1)
			throw new ExcepcionEquipoInvalido("Aun no ingreso un Defensor Suplente.");
		
		if(volantesTitulares != 3)
			throw new ExcepcionEquipoInvalido("Debe ingresar "+(3-volantesTitulares)+" Volante(s) Titular(es) mas");
		if(volantesSuplentes != 1)
			throw new ExcepcionEquipoInvalido("Aun no ingreso un Volante Suplente.");
		
		if(delanterosTitulares != 3)
			throw new ExcepcionEquipoInvalido("Debe ingresar "+(3-delanterosTitulares)+" Delantero(s) Titular(es) mas");
		if(delanterosSuplentes != 1)
			throw new ExcepcionEquipoInvalido("Aun no ingreso un Delantero Suplente.");
		
		return;
			
	}

}
